home *** CD-ROM | disk | FTP | other *** search
- 2188 GOSUB 5000
- 2190 '
- 2200 ' Action!
- 2210 '
- 2220 CLS:V=TIMER
- 2230 LOCATE 25,3:PRINT"Subs:";:PRINT USING SCORE$;DEADSUBS;
- 2240 LOCATE 25,20:PRINT"Score:";:PRINT USING SCORE$;SCR
- 2250 '
- 2260 ' SHP = Ship Position (H)
- 2270 ' V = Timer
- 2280 '
- 2290 '
- 2300 '
- 2310 '
- 2320 '
- 2330 '
- 2340 '
- 2350 DRAW "b u85 b l320"
- 2360 FOR X=1 TO 40
- 2370 DRAW "c1 r3 u1 r3 u1 r3 d1 r3 d1 r3"
- 2380 NEXT
- 2390 LINE (1,190)-(600,190)
- 2400 '
- 2410 ON KEY(10) GOSUB 2950' Depth Chahge!
- 2420 KEY(10)ON
- 2430 ON KEY(11) GOSUB 3740' Speed Up!
- 2440 KEY(11)ON:KEY(11)STOP
- 2450 ON KEY(14) GOSUB 3810' Speed Down!
- 2460 KEY(14)ON:KEY(14)STOP
- 2470 SHPSPD=4:LOCATE 25,51:PRINT"Speed in Knots:";8;
- 2480 '
- 2490 FOR R=1 TO 4
- 2500 GOSUB 3230:GOSUB 3300
- 2510 X(R)=X:Y(R)=Y:SPD(R)=SPD:PUT (X(R),Y(R)),SUB:CHK(R)=1
- 2520 NEXT
- 2530 SHIPCHK=1
- 2540 SHP=570
- 2550 IF SHIPCHK=1 THEN 2580
- 2560 SHIPCHK=0:PUT (SHP+SHPSPD,7),SHIP
- 2570 KEY(11)ON:KEY(14)ON
- 2580 PUT (SHP,7),SHIP
- 2590 KEY(11)STOP:KEY(14)STOP
- 2600 '
- 2610 '
- 2620 FOR R=1 TO 4
- 2630 IF CHK(R)=1 THEN CHK(R)=0:GOTO 2660
- 2640 PUT (X(R)-SPD(R),Y(R)),SUB
- 2650 PUT (X(R),Y(R)),SUB
- 2660 NEXT
- 2670 '
- 2680 IF VCHK=0 THEN VCHK=V+.5
- 2690 V=TIMER:IF VCHK>V THEN 2690
- 2700 VCHK=V+.5
- 2710 SHP=SHP-SHPSPD
- 2720 FOR R=1 TO 4
- 2730 X(R)=X(R)+SPD(R):IF X(R)<600 THEN 2760
- 2740 PUT (X(R)-SPD(R),Y(R)),SUB:CHK(R)=1
- 2750 GOSUB 3300:X(R)=1:Y(R)=Y:SPD(R)=SPD:PUT (X(R),Y(R)),SUB
- 2760 NEXT
- 2770 '
- 2780 KEY(10)STOP
- 2790 GOSUB 3030' Check Chahges
- 2800 '
- 2810 ' Any Hits?
- 2820 '
- 2830 FOR YY=1 TO 8' Depth Charges
- 2840 IF START(YY)=0 THEN 2910
- 2850 FOR R=1 TO 4' Subs
- 2860 IF START(YY)<X(R)-4 OR START(YY)>X(R)+31 THEN 2900
- 2870 IF D(YY)<Y(R) OR D(YY)>Y(R)+6 THEN 2900
- 2880 XR=X(R):YR=Y(R):SPDR=SPD(R):SUB=R:GOSUB 3410' Kill Sub
- 2890 GOSUB 3300:X(R)=1:Y(R)=Y:SPD(R)=SPD:PUT (X(R),Y(R)),SUB:CHK(R)=1
- 2900 NEXT R
- 2910 NEXT YY
- 2920 KEY(10)ON
- 2930 IF SHP>26 THEN 2560
- 2940 PUT(SHP+SHPSPD,7),SHIP:GOTO 2530
- 2950 '
- 2960 ' Depth Chahge!
- 2970 '
- 2980 FOR X=1 TO 8:IF START(X)=0 THEN 3010
- 2990 NEXT
- 3000 RETURN
- 3010 START(X)=SHP+18
- 3020 RETURN
- 3030 '
- 3040 ' Depth Charge
- 3050 '
- 3060 FOR X=1 TO 8
- 3070 IF START(X)=0 THEN 3210
- 3080 IF ACTION(X)=0 THEN PUT(START(X),5),CAN1:GOTO 3180
- 3090 IF ACTION(X)=1 THEN PUT(START(X),5),CAN1:PUT(START(X)+3,3),CAN1:GOTO 3180
- 3100 IF ACTION(X)=2 THEN PUT(START(X)+3,3),CAN1:PUT(START(X)+6,1),CAN1:GOTO 3180
- 3110 IF ACTION(X)=3 THEN PUT(START(X)+6,1),CAN1:PUT(START(X)+9,4),CAN2:GOTO 3180
- 3120 IF ACTION(X)=4 THEN PUT(START(X)+9,4),CAN2:PUT(START(X)+12,9),CAN2:GOTO 3180
- 3130 IF ACTION(X)=5 THEN PUT(START(X)+12,9),CAN2:PUT(START(X)+15,13),CAN2:GOTO 3180
- 3140 IF ACTION(X)=6 THEN PUT(START(X)+15,13),CAN2:START(X)=START(X)+18:PUT(START(X),17),CAN2:GOTO 3180
- 3150 IF ACTION(X)=7 THEN PUT(START(X),17),CAN2:D(X)=20:PUT(START(X),D(X)),CAN1:D(X)=D(X)+3:GOTO 3180
- 3160 IF ACTION(X)=8 THEN PUT(START(X),D(X)-3),CAN1:PUT(START(X),D(X)),CAN2:D(X)=D(X)+3:ACTION(X)=9:GOTO 3190
- 3170 PUT(START(X),D(X)-3),CAN2:PUT(START(X),D(X)),CAN1:D(X)=D(X)+3:ACTION(X)=8:GOTO 3190
- 3180 ACTION(X)=ACTION(X)+1:GOTO 3210
- 3190 IF D(X)>185 AND ACTION(X)=8 THEN PUT(START(X),D(X)-3),CAN1:START(X)=0:D(X)=0:ACTION(X)=0:GOTO 3210
- 3200 IF D(X)>185 AND ACTION(X)=9 THEN PUT(START(X),D(X)-3),CAN2:START(X)=0:D(X)=0:ACTION(X)=0:GOTO 3210
- 3210 NEXT
- 3220 RETURN
- 3230 '
- 3240 ' X Co-Ordinate
- 3250 '
- 3260 RANDOMIZE TIMER
- 3270 X=RND(10):X=INT(X*1000)
- 3280 IF X<1 OR X>590 THEN 3270
- 3290 RETURN
- 3300 '
- 3310 ' Y Co-Ordinate
- 3320 '
- 3330 RANDOMIZE TIMER
- 3340 Y=RND(10):Y=INT(Y*1000)
- 3350 IF Y<20 OR Y>180 THEN 3340
- 3360 IF Y<70 THEN SPD=7:GOTO 3400' Set Subs Speed
- 3370 IF Y<120 THEN SPD=5:GOTO 3400
- 3380 IF Y<150 THEN SPD=3:GOTO 3400
- 3390 SPD=1
- 3400 RETURN
- 3410 '
- 3420 ' Kill Da Sub
- 3430 '
- 3440 IF ACTION(YY)=9 THEN 3460
- 3450 PUT(START(YY),D(YY)-3),CAN1:GOTO 3470
- 3460 PUT(START(YY),D(YY)-3),CAN2
- 3470 START(YY)=0:D(YY)=0:ACTION(YY)=0
- 3480 PUT(XR-SPDR,YR),SUB
- 3490 PUT(XR,YR),CRUNCH1
- 3500 IF OS = 1 THEN SOUND 77,1:SOUND 107,1
- 3510 GOSUB 3720
- 3520 PUT(XR,YR),CRUNCH1
- 3530 PUT(XR,YR),CRUNCH2
- 3540 IF OS = 1 THEN SOUND 57,1:SOUND 87,1
- 3550 GOSUB 3720
- 3560 PUT(XR,YR),CRUNCH2
- 3570 PUT(XR,YR),CRUNCH3
- 3580 IF OS = 1 THEN SOUND 37,1:SOUND 67,1
- 3590 GOSUB 3720
- 3600 PUT(XR,YR),CRUNCH3
- 3610 PUT(XR,YR),CRUNCH4
- 3620 GOSUB 3720
- 3630 PUT(XR,YR),CRUNCH4
- 3640 PUT(XR,YR),CRUNCH5
- 3650 GOSUB 3720
- 3660 PUT(XR,YR),CRUNCH5
- 3670 SCR=SCR+INT((2*YR)/25)
- 3680 LOCATE 25,26:PRINT USING SCORE$;SCR;
- 3690 DEADSUBS=DEADSUBS+1
- 3700 LOCATE 25,9:PRINT USING SCORE$;DEADSUBS;
- 3710 RETURN
- 3720 FOR WT=1 TO 500:NEXT
- 3730 RETURN
- 3740 '
- 3750 ' Ship's Speed Up
- 3760 '
- 3770 IF SHPSPD=11 THEN 3790
- 3780 SHPSPD=SHPSPD+1
- 3790 LOCATE 25,65:PRINT SHPSPD*2;
- 3800 RETURN
- 3810 '
- 3820 ' Ship's Speed Down
- 3830 '
- 3840 IF SHPSPD=0 THEN 3790
- 3850 SHPSPD=SHPSPD-1
- 3860 GOTO 3790
- 3861 '
- 3862 ' Toggle Sound
- 3863 '
- 3864 IF OS = 0 THEN OS = 1 ELSE OS = 0
- 3865 RETURN
- 3870 '
- 3880 ' Duck!
- 3890 '
- 3900 CLS:END
- 3910 RETURN
- 5000 '
- 5010 ' Sub Chase
- 5020 ' Version 1.0
- 5030 '
- 5040 ' Jeff Levering - July 4, 1984 - Boston, Mass.
- 5050 ' (617) 726-0789
- 5060 '
- 5070 ' Requires: IBM-PC
- 5080 ' Graphics (IBM)
- 5090 ' Basica 2.0
- 5100 '
- 5110 '
- 5120 SCORE$="#####,"
- 5130 KEY OFF
- 5140 KEY 7,"210-999"+CHR$(13)
- 5150 ON KEY(5) GOSUB 3870' Abandon Ship!
- 5160 KEY(5)ON
- 5170 OS = 1
- 5180 ON KEY(1) GOSUB 3861' Toggle Sound
- 5190 KEY(1)ON
- 5200 DIM CAN1(100):DIM CAN2(100)
- 5210 DIM CRUNCH1(100):DIM CRUNCH2(100):DIM CRUNCH3(100):DIM CRUNCH4(100)
- 5220 DIM CRUNCH5(100)
- 5230 SCREEN 2,0:CLS
- 5240 A$="b m60,100":DRAW A$
- 5250 DRAW "u2 r1 u2 r1 u2 r3 u2 r15 u1 r60 u1 r 76"
- 5260 DRAW "u2 r1 u10 r1 u15 r2 u8"
- 5270 DRAW "r2 u1 r15 u1 r6 u23 l1 u1 l4 u6"
- 5280 DRAW "r4 d1 r4 d1 r2 d4 r1 d23 d1 r4"
- 5290 DRAW "d1 r13 d1 r8 d1 r5 d1 r4 d6 r1 d8 r1 d8 r1
- 5300 DRAW "d8 r1 d2 r8 d1 r15 d1 r30 d1 r50 d1 r50 d1 r60"
- 5310 DRAW "d1 r22 d1 r6 d1 r3 d2 r3 d2 l3 d2 l3 d2 l7 d2 l8 d2"
- 5320 DRAW "l13 d1 l12 d2 l15 d2 l18 d2 l22 d2 l17 d2 l17 d2 l20 d3 l15 d3
- 5330 DRAW "l27 d1 l18 d2 l25 d2 l50 d1 l30 u1 l40 u1 l30 u2 l30 u3 l20
- 5340 DRAW "u3 l13 u3 l8 u3 l6 u2 l1 u2 l1 u2 l1 u3 l1 u4 l1 u1 l1 u2
- 5350 DRAW "l1 u1
- 5360 LOCATE 13,28:PRINT"Sub Chase"
- 5370 LOCATE 15,25:PRINT"by Jeff Levering"
- 5380 LOCATE 23,20:PRINT"Do You Want Instructions (Y/N) ?";
- 5390 X=0:Y=1
- 5400 P=10
- 5410 PP$=INKEY$
- 5420 IF Y=1 THEN CIRCLE(400,20),P,Y:P=P+15
- 5430 IF Y=0 THEN CIRCLE(400,20),P,Y:P=P-15
- 5440 IF X=0 THEN IF OS = 1 THEN SOUND 1000,2
- 5450 X=X+1:IF X<10 THEN 5500
- 5460 IF OS = 1 THEN SOUND 1000,2:X=0
- 5470 IF Y=0 THEN Y=1:GOTO 5490
- 5480 Y=0:P=P-15:GOTO 5500
- 5490 P=10
- 5500 IF PP$="" THEN 5410
- 5510 IF PP$="y" OR PP$="Y" THEN 5540
- 5520 IF PP$="n" OR PP$="N" THEN 5990
- 5530 BEEP:GOTO 5410
- 5540 CLS
- 5550 LOCATE 1,25:PRINT"SUB CHASE - Instructions"
- 5560 LOCATE 4,1:PRINT"Sub Chase is an IBM-PC version of the classic arcade sub game."
- 5570 LOCATE 7,1:PRINT"At the top of the screen you'll see a destroyer on patrol. This is your ship,":PRINT
- 5580 PRINT "and your job is to sink the submarines which pass below you.":PRINT:PRINT
- 5590 PRINT "Four Submarines will appear on the screen at all times. You have in":PRINT
- 5600 PRINT "your arsenal eight (8) depth charges which you can release on the":PRINT
- 5610 PRINT "unsuspecting submarines by pressing Function Key 10 (F10).":PRINT
- 5620 PRINT " Note: This is the first SUB CHASE, and has not been cleaned up"
- 5630 PRINT " enough to be compiled. In this interpreted version the game"
- 5640 PRINT " can be somewhat slow. The speed of the game will"
- 5650 PRINT " depend on how many of your 8 depth charges you"
- 5660 PRINT " have in the water at any time. The more you have in,
- 5670 PRINT " the slower the game."
- 5680 LOCATE 25,25:PRINT"Press any key when ready...";
- 5690 PP$=INKEY$:IF PP$="" THEN 5690
- 5700 CLS
- 5710 LOCATE 1,25:PRINT"SUB CHASE - Instructions"
- 5720 LOCATE 4,1:PRINT "The speed of your boat can be controlled by using the UP and DOWN cursor keys."
- 5730 PRINT:PRINT "Pressing UP will speed up your boat, and pressing DOWN will slow it down."
- 5740 PRINT:PRINT:PRINT"A status line will appear at the bottom of the screen which will show"
- 5750 PRINT:PRINT"you how many subs you've sunk, what your score is, and your boat's speed."
- 5760 PRINT:PRINT"The deeper the sub is when you sink it, the more points you get."
- 5770 PRINT:PRINT:PRINT"There is also a Panic Key, Function Key 5 (F5), which will stop the game and":PRINT
- 5780 PRINT:PRINT"clear the screen. This can be useful if your boss wanders in. To restart the"
- 5790 PRINT:PRINT"game, press F2."
- 5800 LOCATE 25,22:PRINT"Press any key to start ";
- 5810 A=64:B=35
- 5820 PP$=INKEY$
- 5830 IF A=44 THEN A=64:GOTO 5880
- 5840 LOCATE 25,A:PRINT"SUB ";
- 5850 FOR Y=1 TO B:NEXT
- 5860 A=A-1
- 5870 IF PP$<>"" THEN 5990 ELSE 5820
- 5880 PP$=INKEY$
- 5890 IF A=48 THEN 5940
- 5900 LOCATE 25,A:PRINT"CHASE ";
- 5910 FOR Y=1 TO B:NEXT
- 5920 A=A-1
- 5930 IF PP$<>"" THEN 5990 ELSE 5880
- 5940 X=0
- 5950 PP$=INKEY$
- 5960 X=X+1
- 5970 IF X=150 THEN LOCATE 25,A-4:PRINT" ";:A=64:GOTO 5820
- 5980 IF PP$<>"" THEN 5990 ELSE 5950
- 5990 SCREEN 2,0:CLS:X=1
- 6000 A$(1)=" 1 "
- 6010 A$(2)=" 1 1 "
- 6020 A$(3)=" 1 1"
- 6030 A$(4)="1 1"
- 6040 A$(5)=" 1 1"
- 6050 A$(6)=" 1"
- 6060 FOR Y=1 TO 6
- 6070 FOR R=1 TO LEN(A$(Y))
- 6080 PSET (R,X),VAL(MID$(A$(Y),R,1))
- 6090 NEXT R
- 6100 X=X+1
- 6110 NEXT Y
- 6120 GET(1,1)-(7,7),CAN1:X=1:CLS
- 6130 A$(1)=" 1"
- 6140 A$(2)=" 1 1"
- 6150 A$(3)="1 1"
- 6160 A$(4)=" 1 1"
- 6170 A$(5)=" 1 1"
- 6180 A$(6)=" 1"
- 6190 FOR Y=1 TO 6
- 6200 FOR R=1 TO LEN(A$(Y))
- 6210 PSET (R,X),VAL(MID$(A$(Y),R,1))
- 6220 NEXT R
- 6230 X=X+1
- 6240 NEXT Y
- 6250 GET(1,1)-(7,7),CAN2
- 6260 DIM SHIP(400)
- 6270 DIM SUB(400)
- 6280 SCREEN 2,0:WIDTH 80:CLS:X=55
- 6290 LOCATE 25,20:PRINT"Please Wait - Setting Up Graphics...";
- 6300 LOCATE 8,24:PRINT"Ship"
- 6310 A$(1)=" 11"
- 6320 A$(2)=" 1 1111"
- 6330 A$(3)=" 111 11111 1 1"
- 6340 A$(4)="1 111 11111 1 1"
- 6350 A$(5)=" 111111111111111111111111111"
- 6360 A$(6)=" 1111111111111111111111"
- 6370 A$(7)=" 111111111111111111111"
- 6380 FOR Y=110 TO 117
- 6390 FOR R=1 TO LEN(A$(X-54))
- 6400 PSET (R+250,X),VAL(MID$(A$(X-54),R,1))
- 6410 NEXT R
- 6420 X=X+1
- 6430 NEXT Y
- 6440 GET (250,55)-(285,62),SHIP
- 6450 X=95
- 6460 LOCATE 13,24:PRINT"Sub"
- 6470 A$(1)=" 1"
- 6480 A$(2)=" 1"
- 6490 A$(3)=" 11111"
- 6500 A$(4)=" 11111"
- 6510 A$(5)=" 1111111111111111111111111111"
- 6520 A$(6)="11111111111111111111111111111"
- 6530 FOR Y=1 TO 6
- 6540 FOR R=1 TO LEN(A$(Y))
- 6550 PSET (R+250,X),VAL(MID$(A$(Y),R,1))
- 6560 NEXT R
- 6570 X=X+1
- 6580 NEXT Y
- 6590 GET (250,95)-(285,102),SUB
- 6600 A$(1)=" 1 11 1111 "
- 6610 A$(2)=" 1111 11111 "
- 6620 A$(3)="11 111111111 "
- 6630 A$(4)="1111111 1111111 "
- 6640 A$(5)=" 111111111 1111111111 "
- 6650 A$(6)=" 11111111111111 "
- 6660 FOR Y=1 TO 6
- 6670 FOR R=1 TO LEN(A$(Y))
- 6680 PSET (R+250,Y+95),VAL(MID$(A$(Y),R,1))
- 6690 NEXT R
- 6700 NEXT Y
- 6710 GET (250,95)-(285,102),CRUNCH1
- 6720 A$(1)="111 1 11 "
- 6730 A$(2)=" 11111 111 1111 "
- 6740 A$(3)=" 111111 111111111 "
- 6750 A$(4)=" 111111 1111111 "
- 6760 A$(5)=" 1111111 1111111 "
- 6770 A$(6)=" 11 1 1 1 111 "
- 6780 FOR Y=1 TO 6
- 6790 FOR R=1 TO LEN(A$(Y))
- 6800 PSET (R+250,Y+95),VAL(MID$(A$(Y),R,1))
- 6810 NEXT R
- 6820 NEXT Y
- 6830 GET (250,95)-(285,102),CRUNCH2
- 6840 A$(1)=" 11 1 1 1 "
- 6850 A$(2)=" 11111 1 11 "
- 6860 A$(3)=" 111 1 111111 "
- 6870 A$(4)=" 11 11 1 111 11 1 1 "
- 6880 A$(5)=" 11 111 1 11 "
- 6890 A$(6)=" 1 1 1 1 1 "
- 6900 FOR Y=1 TO 6
- 6910 FOR R=1 TO LEN(A$(Y))
- 6920 PSET (R+250,Y+95),VAL(MID$(A$(Y),R,1))
- 6930 NEXT R
- 6940 NEXT Y
- 6950 GET (250,95)-(285,102),CRUNCH3
- 6960 A$(1)=" 1 1 1 1 "
- 6970 A$(2)=" 1 1 1 1 1 "
- 6980 A$(3)=" 1 1 1 1 1 "
- 6990 A$(4)=" 1 1 1 1 1 1 1 1 1 "
- 7000 A$(5)=" 1 1 1 1 "
- 7010 A$(6)=" 1 1 1 1 "
- 7020 FOR Y=1 TO 6
- 7030 FOR R=1 TO LEN(A$(Y))
- 7040 PSET (R+250,Y+95),VAL(MID$(A$(Y),R,1))
- 7050 NEXT R
- 7060 NEXT Y
- 7070 GET (250,95)-(285,102),CRUNCH4
- 7080 FOR X=1 TO 7:A$(X)=STRING$(30,32):NEXT
- 7090 FOR Y=1 TO 7
- 7100 FOR R=1 TO LEN(A$(Y))
- 7110 PSET (R+250,Y+94),VAL(MID$(A$(Y),R,1))
- 7120 NEXT R
- 7130 NEXT Y
- 7140 GET (250,95)-(285,102),CRUNCH5
- 7160 RETURN